package com.studyweb.mapper;

import com.studyweb.pojo.entity.PaperScore;
import com.studyweb.pojo.entity.PaperScoreDetail;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@Mapper
public interface PaperScoreMapper {
    
    /**
     * 查询所有试卷分值（带分页）
     * @param examName 考试名称（模糊查询）
     * @param subject 科目（模糊查询）
     * @return 试卷分值列表
     */
    List<PaperScore> selectAllWithPagination(@Param("examName") String examName,
                                            @Param("subject") String subject);
    
    /**
     * 查询试卷分值总数
     * @param examName 考试名称（模糊查询）
     * @param subject 科目（模糊查询）
     * @return 总数
     */
    int countAll(@Param("examName") String examName, @Param("subject") String subject);
    
    /**
     * 根据ID查询试卷分值
     * @param id 试卷分值ID
     * @return 试卷分值对象
     */
    PaperScore selectById(Long id);
    
    /**
     * 插入试卷分值
     * @param paperScore 试卷分值对象
     * @return 影响行数
     */
    int insert(PaperScore paperScore);
    
    /**
     * 插入试卷分值详情
     * @param paperScoreDetail 试卷分值详情对象
     * @return 影响行数
     */
    int insertDetail(PaperScoreDetail paperScoreDetail);
    
    /**
     * 更新试卷分值
     * @param paperScore 试卷分值对象
     * @return 影响行数
     */
    int update(PaperScore paperScore);
    
    /**
     * 删除试卷分值详情
     * @param paperScoreId 试卷分值ID
     * @return 影响行数
     */
    int deleteDetailsByPaperScoreId(Long paperScoreId);
    
    /**
     * 根据试卷分值ID查询详情列表
     * @param paperScoreId 试卷分值ID
     * @return 试卷分值详情列表
     */
    List<PaperScoreDetail> selectDetailsByPaperScoreId(Long paperScoreId);
    
    /**
     * 删除试卷分值
     * @param id 试卷分值ID
     * @return 影响行数
     */
    int deleteById(Long id);
}